Next:
Greedy Alogrithm 1
, Previous:
Greedy Algorithm 2
, Up:
Index
E) Recusion and Tail Recursion
Recursion Factorial function
int
factorial
(
int
n
)
{
if
(
n
==
1
)
return
1
;
return
n
*
factorial
(
n
-1
)
;
}
Tail Recursion Factorial function
꼬리 재귀(Tail Recursion)은 재귀 호출이 끝나면 아무 연산도 하지 않고 결과만 바로 반환하는 재귀 함수를 뜻한다.
재귀 함수가 꼬리 재귀 방식으로 구현되고,
컴파일러가 꼬리 재귀 최적화를 지원할 경우,
컴파일러는 꼬리 재귀 함수를 반복문으로 변경하기에 스택에서 낭비되는 메모리를 피할 수 있다.
int
factorial
(
int
n
,
total
=
1
)
{
if
(
n
==
1
)
return
total
;
return
factorial
(
n
-1
,
n
*
total
)
;
}
int
factorial
(
int
n
)
{
int
total
=
1
;
do
{
if
(
n
==
1
)
return
total
;
total
=
total
*
n
;
n
--
;
}
while
(
true
)
;
}